local ffi = require 'ffi'
ffi.cdef[[
/* + BEGIN ./OpenGL/gl3.h */
enum { GL3_PROTOTYPES = 1 };
enum { APIENTRY = 1 };
/* #define APIENTRYP APIENTRY * ### string, not number "APIENTRY *" */
enum { GLAPI = 0 };
/* ++ BEGIN ./OpenGL/gltypes.h */
/* +++ BEGIN /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stdint.h */
]] require 'ffi.req' 'c.stdint' ffi.cdef[[
/* +++ END   /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include/stdint.h */
typedef uint32_t GLbitfield;
typedef uint8_t GLboolean;
typedef int8_t GLbyte;
typedef float GLclampf;
typedef uint32_t GLenum;
typedef float GLfloat;
typedef int32_t GLint;
typedef int16_t GLshort;
typedef int32_t GLsizei;
typedef uint8_t GLubyte;
typedef uint32_t GLuint;
typedef uint16_t GLushort;
typedef void GLvoid;
typedef char GLchar;
typedef char GLcharARB;
typedef void *GLhandleARB;
typedef double GLdouble;
typedef double GLclampd;
typedef int32_t GLfixed;
typedef uint16_t GLhalf;
typedef uint16_t GLhalfARB;
typedef int64_t GLint64;
typedef struct __GLsync *GLsync;
typedef uint64_t GLuint64;
typedef int64_t GLint64EXT;
typedef uint64_t GLuint64EXT;
typedef intptr_t GLintptr;
typedef intptr_t GLsizeiptr;
typedef intptr_t GLintptrARB;
typedef intptr_t GLsizeiptrARB;
/* ++ END   ./OpenGL/gltypes.h */
/* ++ BEGIN ./OpenGL/OpenGLAvailability.h */
/* +++ BEGIN /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/os/availability.h */
enum { API_TO_BE_DEPRECATED = 100000 };
enum { API_TO_BE_DEPRECATED_MACOS = 100000 };
enum { API_TO_BE_DEPRECATED_IOS = 100000 };
enum { API_TO_BE_DEPRECATED_TVOS = 100000 };
enum { API_TO_BE_DEPRECATED_WATCHOS = 100000 };
enum { API_TO_BE_DEPRECATED_DRIVERKIT = 100000 };
enum { API_TO_BE_DEPRECATED_VISIONOS = 100000 };
/* ++++ BEGIN /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h */
/* +++++ BEGIN /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h */
/* +++++ END   /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternalLegacy.h */
/* ++++ END   /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/AvailabilityInternal.h */
/* +++ END   /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/os/availability.h */
/* ++ END   ./OpenGL/OpenGLAvailability.h */
enum { GL_DEPTH_BUFFER_BIT = 256 };
enum { GL_STENCIL_BUFFER_BIT = 1024 };
enum { GL_COLOR_BUFFER_BIT = 16384 };
enum { GL_FALSE = 0 };
enum { GL_TRUE = 1 };
enum { GL_POINTS = 0 };
enum { GL_LINES = 1 };
enum { GL_LINE_LOOP = 2 };
enum { GL_LINE_STRIP = 3 };
enum { GL_TRIANGLES = 4 };
enum { GL_TRIANGLE_STRIP = 5 };
enum { GL_TRIANGLE_FAN = 6 };
enum { GL_NEVER = 512 };
enum { GL_LESS = 513 };
enum { GL_EQUAL = 514 };
enum { GL_LEQUAL = 515 };
enum { GL_GREATER = 516 };
enum { GL_NOTEQUAL = 517 };
enum { GL_GEQUAL = 518 };
enum { GL_ALWAYS = 519 };
enum { GL_ZERO = 0 };
enum { GL_ONE = 1 };
enum { GL_SRC_COLOR = 768 };
enum { GL_ONE_MINUS_SRC_COLOR = 769 };
enum { GL_SRC_ALPHA = 770 };
enum { GL_ONE_MINUS_SRC_ALPHA = 771 };
enum { GL_DST_ALPHA = 772 };
enum { GL_ONE_MINUS_DST_ALPHA = 773 };
enum { GL_DST_COLOR = 774 };
enum { GL_ONE_MINUS_DST_COLOR = 775 };
enum { GL_SRC_ALPHA_SATURATE = 776 };
enum { GL_NONE = 0 };
enum { GL_FRONT_LEFT = 1024 };
enum { GL_FRONT_RIGHT = 1025 };
enum { GL_BACK_LEFT = 1026 };
enum { GL_BACK_RIGHT = 1027 };
enum { GL_FRONT = 1028 };
enum { GL_BACK = 1029 };
enum { GL_LEFT = 1030 };
enum { GL_RIGHT = 1031 };
enum { GL_FRONT_AND_BACK = 1032 };
enum { GL_NO_ERROR = 0 };
enum { GL_INVALID_ENUM = 1280 };
enum { GL_INVALID_VALUE = 1281 };
enum { GL_INVALID_OPERATION = 1282 };
enum { GL_OUT_OF_MEMORY = 1285 };
enum { GL_CW = 2304 };
enum { GL_CCW = 2305 };
enum { GL_POINT_SIZE = 2833 };
enum { GL_POINT_SIZE_RANGE = 2834 };
enum { GL_POINT_SIZE_GRANULARITY = 2835 };
enum { GL_LINE_SMOOTH = 2848 };
enum { GL_LINE_WIDTH = 2849 };
enum { GL_LINE_WIDTH_RANGE = 2850 };
enum { GL_LINE_WIDTH_GRANULARITY = 2851 };
enum { GL_POLYGON_MODE = 2880 };
enum { GL_POLYGON_SMOOTH = 2881 };
enum { GL_CULL_FACE = 2884 };
enum { GL_CULL_FACE_MODE = 2885 };
enum { GL_FRONT_FACE = 2886 };
enum { GL_DEPTH_RANGE = 2928 };
enum { GL_DEPTH_TEST = 2929 };
enum { GL_DEPTH_WRITEMASK = 2930 };
enum { GL_DEPTH_CLEAR_VALUE = 2931 };
enum { GL_DEPTH_FUNC = 2932 };
enum { GL_STENCIL_TEST = 2960 };
enum { GL_STENCIL_CLEAR_VALUE = 2961 };
enum { GL_STENCIL_FUNC = 2962 };
enum { GL_STENCIL_VALUE_MASK = 2963 };
enum { GL_STENCIL_FAIL = 2964 };
enum { GL_STENCIL_PASS_DEPTH_FAIL = 2965 };
enum { GL_STENCIL_PASS_DEPTH_PASS = 2966 };
enum { GL_STENCIL_REF = 2967 };
enum { GL_STENCIL_WRITEMASK = 2968 };
enum { GL_VIEWPORT = 2978 };
enum { GL_DITHER = 3024 };
enum { GL_BLEND_DST = 3040 };
enum { GL_BLEND_SRC = 3041 };
enum { GL_BLEND = 3042 };
enum { GL_LOGIC_OP_MODE = 3056 };
enum { GL_COLOR_LOGIC_OP = 3058 };
enum { GL_DRAW_BUFFER = 3073 };
enum { GL_READ_BUFFER = 3074 };
enum { GL_SCISSOR_BOX = 3088 };
enum { GL_SCISSOR_TEST = 3089 };
enum { GL_COLOR_CLEAR_VALUE = 3106 };
enum { GL_COLOR_WRITEMASK = 3107 };
enum { GL_DOUBLEBUFFER = 3122 };
enum { GL_STEREO = 3123 };
enum { GL_LINE_SMOOTH_HINT = 3154 };
enum { GL_POLYGON_SMOOTH_HINT = 3155 };
enum { GL_UNPACK_SWAP_BYTES = 3312 };
enum { GL_UNPACK_LSB_FIRST = 3313 };
enum { GL_UNPACK_ROW_LENGTH = 3314 };
enum { GL_UNPACK_SKIP_ROWS = 3315 };
enum { GL_UNPACK_SKIP_PIXELS = 3316 };
enum { GL_UNPACK_ALIGNMENT = 3317 };
enum { GL_PACK_SWAP_BYTES = 3328 };
enum { GL_PACK_LSB_FIRST = 3329 };
enum { GL_PACK_ROW_LENGTH = 3330 };
enum { GL_PACK_SKIP_ROWS = 3331 };
enum { GL_PACK_SKIP_PIXELS = 3332 };
enum { GL_PACK_ALIGNMENT = 3333 };
enum { GL_MAX_TEXTURE_SIZE = 3379 };
enum { GL_MAX_VIEWPORT_DIMS = 3386 };
enum { GL_SUBPIXEL_BITS = 3408 };
enum { GL_TEXTURE_1D = 3552 };
enum { GL_TEXTURE_2D = 3553 };
enum { GL_POLYGON_OFFSET_UNITS = 10752 };
enum { GL_POLYGON_OFFSET_POINT = 10753 };
enum { GL_POLYGON_OFFSET_LINE = 10754 };
enum { GL_POLYGON_OFFSET_FILL = 32823 };
enum { GL_POLYGON_OFFSET_FACTOR = 32824 };
enum { GL_TEXTURE_BINDING_1D = 32872 };
enum { GL_TEXTURE_BINDING_2D = 32873 };
enum { GL_TEXTURE_WIDTH = 4096 };
enum { GL_TEXTURE_HEIGHT = 4097 };
enum { GL_TEXTURE_INTERNAL_FORMAT = 4099 };
enum { GL_TEXTURE_BORDER_COLOR = 4100 };
enum { GL_TEXTURE_RED_SIZE = 32860 };
enum { GL_TEXTURE_GREEN_SIZE = 32861 };
enum { GL_TEXTURE_BLUE_SIZE = 32862 };
enum { GL_TEXTURE_ALPHA_SIZE = 32863 };
enum { GL_DONT_CARE = 4352 };
enum { GL_FASTEST = 4353 };
enum { GL_NICEST = 4354 };
enum { GL_BYTE = 5120 };
enum { GL_UNSIGNED_BYTE = 5121 };
enum { GL_SHORT = 5122 };
enum { GL_UNSIGNED_SHORT = 5123 };
enum { GL_INT = 5124 };
enum { GL_UNSIGNED_INT = 5125 };
enum { GL_FLOAT = 5126 };
enum { GL_DOUBLE = 5130 };
enum { GL_CLEAR = 5376 };
enum { GL_AND = 5377 };
enum { GL_AND_REVERSE = 5378 };
enum { GL_COPY = 5379 };
enum { GL_AND_INVERTED = 5380 };
enum { GL_NOOP = 5381 };
enum { GL_XOR = 5382 };
enum { GL_OR = 5383 };
enum { GL_NOR = 5384 };
enum { GL_EQUIV = 5385 };
enum { GL_INVERT = 5386 };
enum { GL_OR_REVERSE = 5387 };
enum { GL_COPY_INVERTED = 5388 };
enum { GL_OR_INVERTED = 5389 };
enum { GL_NAND = 5390 };
enum { GL_SET = 5391 };
enum { GL_TEXTURE = 5890 };
enum { GL_COLOR = 6144 };
enum { GL_DEPTH = 6145 };
enum { GL_STENCIL = 6146 };
enum { GL_STENCIL_INDEX = 6401 };
enum { GL_DEPTH_COMPONENT = 6402 };
enum { GL_RED = 6403 };
enum { GL_GREEN = 6404 };
enum { GL_BLUE = 6405 };
enum { GL_ALPHA = 6406 };
enum { GL_RGB = 6407 };
enum { GL_RGBA = 6408 };
enum { GL_POINT = 6912 };
enum { GL_LINE = 6913 };
enum { GL_FILL = 6914 };
enum { GL_KEEP = 7680 };
enum { GL_REPLACE = 7681 };
enum { GL_INCR = 7682 };
enum { GL_DECR = 7683 };
enum { GL_VENDOR = 7936 };
enum { GL_RENDERER = 7937 };
enum { GL_VERSION = 7938 };
enum { GL_EXTENSIONS = 7939 };
enum { GL_NEAREST = 9728 };
enum { GL_LINEAR = 9729 };
enum { GL_NEAREST_MIPMAP_NEAREST = 9984 };
enum { GL_LINEAR_MIPMAP_NEAREST = 9985 };
enum { GL_NEAREST_MIPMAP_LINEAR = 9986 };
enum { GL_LINEAR_MIPMAP_LINEAR = 9987 };
enum { GL_TEXTURE_MAG_FILTER = 10240 };
enum { GL_TEXTURE_MIN_FILTER = 10241 };
enum { GL_TEXTURE_WRAP_S = 10242 };
enum { GL_TEXTURE_WRAP_T = 10243 };
enum { GL_PROXY_TEXTURE_1D = 32867 };
enum { GL_PROXY_TEXTURE_2D = 32868 };
enum { GL_REPEAT = 10497 };
enum { GL_R3_G3_B2 = 10768 };
enum { GL_RGB4 = 32847 };
enum { GL_RGB5 = 32848 };
enum { GL_RGB8 = 32849 };
enum { GL_RGB10 = 32850 };
enum { GL_RGB12 = 32851 };
enum { GL_RGB16 = 32852 };
enum { GL_RGBA2 = 32853 };
enum { GL_RGBA4 = 32854 };
enum { GL_RGB5_A1 = 32855 };
enum { GL_RGBA8 = 32856 };
enum { GL_RGB10_A2 = 32857 };
enum { GL_RGBA12 = 32858 };
enum { GL_RGBA16 = 32859 };
enum { GL_UNSIGNED_BYTE_3_3_2 = 32818 };
enum { GL_UNSIGNED_SHORT_4_4_4_4 = 32819 };
enum { GL_UNSIGNED_SHORT_5_5_5_1 = 32820 };
enum { GL_UNSIGNED_INT_8_8_8_8 = 32821 };
enum { GL_UNSIGNED_INT_10_10_10_2 = 32822 };
enum { GL_TEXTURE_BINDING_3D = 32874 };
enum { GL_PACK_SKIP_IMAGES = 32875 };
enum { GL_PACK_IMAGE_HEIGHT = 32876 };
enum { GL_UNPACK_SKIP_IMAGES = 32877 };
enum { GL_UNPACK_IMAGE_HEIGHT = 32878 };
enum { GL_TEXTURE_3D = 32879 };
enum { GL_PROXY_TEXTURE_3D = 32880 };
enum { GL_TEXTURE_DEPTH = 32881 };
enum { GL_TEXTURE_WRAP_R = 32882 };
enum { GL_MAX_3D_TEXTURE_SIZE = 32883 };
enum { GL_UNSIGNED_BYTE_2_3_3_REV = 33634 };
enum { GL_UNSIGNED_SHORT_5_6_5 = 33635 };
enum { GL_UNSIGNED_SHORT_5_6_5_REV = 33636 };
enum { GL_UNSIGNED_SHORT_4_4_4_4_REV = 33637 };
enum { GL_UNSIGNED_SHORT_1_5_5_5_REV = 33638 };
enum { GL_UNSIGNED_INT_8_8_8_8_REV = 33639 };
enum { GL_UNSIGNED_INT_2_10_10_10_REV = 33640 };
enum { GL_BGR = 32992 };
enum { GL_BGRA = 32993 };
enum { GL_MAX_ELEMENTS_VERTICES = 33000 };
enum { GL_MAX_ELEMENTS_INDICES = 33001 };
enum { GL_CLAMP_TO_EDGE = 33071 };
enum { GL_TEXTURE_MIN_LOD = 33082 };
enum { GL_TEXTURE_MAX_LOD = 33083 };
enum { GL_TEXTURE_BASE_LEVEL = 33084 };
enum { GL_TEXTURE_MAX_LEVEL = 33085 };
enum { GL_SMOOTH_POINT_SIZE_RANGE = 2834 };
enum { GL_SMOOTH_POINT_SIZE_GRANULARITY = 2835 };
enum { GL_SMOOTH_LINE_WIDTH_RANGE = 2850 };
enum { GL_SMOOTH_LINE_WIDTH_GRANULARITY = 2851 };
enum { GL_ALIASED_LINE_WIDTH_RANGE = 33902 };
enum { GL_CONSTANT_COLOR = 32769 };
enum { GL_ONE_MINUS_CONSTANT_COLOR = 32770 };
enum { GL_CONSTANT_ALPHA = 32771 };
enum { GL_ONE_MINUS_CONSTANT_ALPHA = 32772 };
enum { GL_BLEND_COLOR = 32773 };
enum { GL_FUNC_ADD = 32774 };
enum { GL_MIN = 32775 };
enum { GL_MAX = 32776 };
enum { GL_BLEND_EQUATION = 32777 };
enum { GL_FUNC_SUBTRACT = 32778 };
enum { GL_FUNC_REVERSE_SUBTRACT = 32779 };
enum { GL_TEXTURE0 = 33984 };
enum { GL_TEXTURE1 = 33985 };
enum { GL_TEXTURE2 = 33986 };
enum { GL_TEXTURE3 = 33987 };
enum { GL_TEXTURE4 = 33988 };
enum { GL_TEXTURE5 = 33989 };
enum { GL_TEXTURE6 = 33990 };
enum { GL_TEXTURE7 = 33991 };
enum { GL_TEXTURE8 = 33992 };
enum { GL_TEXTURE9 = 33993 };
enum { GL_TEXTURE10 = 33994 };
enum { GL_TEXTURE11 = 33995 };
enum { GL_TEXTURE12 = 33996 };
enum { GL_TEXTURE13 = 33997 };
enum { GL_TEXTURE14 = 33998 };
enum { GL_TEXTURE15 = 33999 };
enum { GL_TEXTURE16 = 34000 };
enum { GL_TEXTURE17 = 34001 };
enum { GL_TEXTURE18 = 34002 };
enum { GL_TEXTURE19 = 34003 };
enum { GL_TEXTURE20 = 34004 };
enum { GL_TEXTURE21 = 34005 };
enum { GL_TEXTURE22 = 34006 };
enum { GL_TEXTURE23 = 34007 };
enum { GL_TEXTURE24 = 34008 };
enum { GL_TEXTURE25 = 34009 };
enum { GL_TEXTURE26 = 34010 };
enum { GL_TEXTURE27 = 34011 };
enum { GL_TEXTURE28 = 34012 };
enum { GL_TEXTURE29 = 34013 };
enum { GL_TEXTURE30 = 34014 };
enum { GL_TEXTURE31 = 34015 };
enum { GL_ACTIVE_TEXTURE = 34016 };
enum { GL_MULTISAMPLE = 32925 };
enum { GL_SAMPLE_ALPHA_TO_COVERAGE = 32926 };
enum { GL_SAMPLE_ALPHA_TO_ONE = 32927 };
enum { GL_SAMPLE_COVERAGE = 32928 };
enum { GL_SAMPLE_BUFFERS = 32936 };
enum { GL_SAMPLES = 32937 };
enum { GL_SAMPLE_COVERAGE_VALUE = 32938 };
enum { GL_SAMPLE_COVERAGE_INVERT = 32939 };
enum { GL_TEXTURE_CUBE_MAP = 34067 };
enum { GL_TEXTURE_BINDING_CUBE_MAP = 34068 };
enum { GL_TEXTURE_CUBE_MAP_POSITIVE_X = 34069 };
enum { GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 34070 };
enum { GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 34071 };
enum { GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072 };
enum { GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 34073 };
enum { GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074 };
enum { GL_PROXY_TEXTURE_CUBE_MAP = 34075 };
enum { GL_MAX_CUBE_MAP_TEXTURE_SIZE = 34076 };
enum { GL_COMPRESSED_RGB = 34029 };
enum { GL_COMPRESSED_RGBA = 34030 };
enum { GL_TEXTURE_COMPRESSION_HINT = 34031 };
enum { GL_TEXTURE_COMPRESSED_IMAGE_SIZE = 34464 };
enum { GL_TEXTURE_COMPRESSED = 34465 };
enum { GL_NUM_COMPRESSED_TEXTURE_FORMATS = 34466 };
enum { GL_COMPRESSED_TEXTURE_FORMATS = 34467 };
enum { GL_CLAMP_TO_BORDER = 33069 };
enum { GL_BLEND_DST_RGB = 32968 };
enum { GL_BLEND_SRC_RGB = 32969 };
enum { GL_BLEND_DST_ALPHA = 32970 };
enum { GL_BLEND_SRC_ALPHA = 32971 };
enum { GL_POINT_FADE_THRESHOLD_SIZE = 33064 };
enum { GL_DEPTH_COMPONENT16 = 33189 };
enum { GL_DEPTH_COMPONENT24 = 33190 };
enum { GL_DEPTH_COMPONENT32 = 33191 };
enum { GL_MIRRORED_REPEAT = 33648 };
enum { GL_MAX_TEXTURE_LOD_BIAS = 34045 };
enum { GL_TEXTURE_LOD_BIAS = 34049 };
enum { GL_INCR_WRAP = 34055 };
enum { GL_DECR_WRAP = 34056 };
enum { GL_TEXTURE_DEPTH_SIZE = 34890 };
enum { GL_TEXTURE_COMPARE_MODE = 34892 };
enum { GL_TEXTURE_COMPARE_FUNC = 34893 };
enum { GL_BUFFER_SIZE = 34660 };
enum { GL_BUFFER_USAGE = 34661 };
enum { GL_QUERY_COUNTER_BITS = 34916 };
enum { GL_CURRENT_QUERY = 34917 };
enum { GL_QUERY_RESULT = 34918 };
enum { GL_QUERY_RESULT_AVAILABLE = 34919 };
enum { GL_ARRAY_BUFFER = 34962 };
enum { GL_ELEMENT_ARRAY_BUFFER = 34963 };
enum { GL_ARRAY_BUFFER_BINDING = 34964 };
enum { GL_ELEMENT_ARRAY_BUFFER_BINDING = 34965 };
enum { GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975 };
enum { GL_READ_ONLY = 35000 };
enum { GL_WRITE_ONLY = 35001 };
enum { GL_READ_WRITE = 35002 };
enum { GL_BUFFER_ACCESS = 35003 };
enum { GL_BUFFER_MAPPED = 35004 };
enum { GL_BUFFER_MAP_POINTER = 35005 };
enum { GL_STREAM_DRAW = 35040 };
enum { GL_STREAM_READ = 35041 };
enum { GL_STREAM_COPY = 35042 };
enum { GL_STATIC_DRAW = 35044 };
enum { GL_STATIC_READ = 35045 };
enum { GL_STATIC_COPY = 35046 };
enum { GL_DYNAMIC_DRAW = 35048 };
enum { GL_DYNAMIC_READ = 35049 };
enum { GL_DYNAMIC_COPY = 35050 };
enum { GL_SAMPLES_PASSED = 35092 };
enum { GL_BLEND_EQUATION_RGB = 32777 };
enum { GL_VERTEX_ATTRIB_ARRAY_ENABLED = 34338 };
enum { GL_VERTEX_ATTRIB_ARRAY_SIZE = 34339 };
enum { GL_VERTEX_ATTRIB_ARRAY_STRIDE = 34340 };
enum { GL_VERTEX_ATTRIB_ARRAY_TYPE = 34341 };
enum { GL_CURRENT_VERTEX_ATTRIB = 34342 };
enum { GL_VERTEX_PROGRAM_POINT_SIZE = 34370 };
enum { GL_VERTEX_ATTRIB_ARRAY_POINTER = 34373 };
enum { GL_STENCIL_BACK_FUNC = 34816 };
enum { GL_STENCIL_BACK_FAIL = 34817 };
enum { GL_STENCIL_BACK_PASS_DEPTH_FAIL = 34818 };
enum { GL_STENCIL_BACK_PASS_DEPTH_PASS = 34819 };
enum { GL_MAX_DRAW_BUFFERS = 34852 };
enum { GL_DRAW_BUFFER0 = 34853 };
enum { GL_DRAW_BUFFER1 = 34854 };
enum { GL_DRAW_BUFFER2 = 34855 };
enum { GL_DRAW_BUFFER3 = 34856 };
enum { GL_DRAW_BUFFER4 = 34857 };
enum { GL_DRAW_BUFFER5 = 34858 };
enum { GL_DRAW_BUFFER6 = 34859 };
enum { GL_DRAW_BUFFER7 = 34860 };
enum { GL_DRAW_BUFFER8 = 34861 };
enum { GL_DRAW_BUFFER9 = 34862 };
enum { GL_DRAW_BUFFER10 = 34863 };
enum { GL_DRAW_BUFFER11 = 34864 };
enum { GL_DRAW_BUFFER12 = 34865 };
enum { GL_DRAW_BUFFER13 = 34866 };
enum { GL_DRAW_BUFFER14 = 34867 };
enum { GL_DRAW_BUFFER15 = 34868 };
enum { GL_BLEND_EQUATION_ALPHA = 34877 };
enum { GL_MAX_VERTEX_ATTRIBS = 34921 };
enum { GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922 };
enum { GL_MAX_TEXTURE_IMAGE_UNITS = 34930 };
enum { GL_FRAGMENT_SHADER = 35632 };
enum { GL_VERTEX_SHADER = 35633 };
enum { GL_MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657 };
enum { GL_MAX_VERTEX_UNIFORM_COMPONENTS = 35658 };
enum { GL_MAX_VARYING_FLOATS = 35659 };
enum { GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660 };
enum { GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661 };
enum { GL_SHADER_TYPE = 35663 };
enum { GL_FLOAT_VEC2 = 35664 };
enum { GL_FLOAT_VEC3 = 35665 };
enum { GL_FLOAT_VEC4 = 35666 };
enum { GL_INT_VEC2 = 35667 };
enum { GL_INT_VEC3 = 35668 };
enum { GL_INT_VEC4 = 35669 };
enum { GL_BOOL = 35670 };
enum { GL_BOOL_VEC2 = 35671 };
enum { GL_BOOL_VEC3 = 35672 };
enum { GL_BOOL_VEC4 = 35673 };
enum { GL_FLOAT_MAT2 = 35674 };
enum { GL_FLOAT_MAT3 = 35675 };
enum { GL_FLOAT_MAT4 = 35676 };
enum { GL_SAMPLER_1D = 35677 };
enum { GL_SAMPLER_2D = 35678 };
enum { GL_SAMPLER_3D = 35679 };
enum { GL_SAMPLER_CUBE = 35680 };
enum { GL_SAMPLER_1D_SHADOW = 35681 };
enum { GL_SAMPLER_2D_SHADOW = 35682 };
enum { GL_DELETE_STATUS = 35712 };
enum { GL_COMPILE_STATUS = 35713 };
enum { GL_LINK_STATUS = 35714 };
enum { GL_VALIDATE_STATUS = 35715 };
enum { GL_INFO_LOG_LENGTH = 35716 };
enum { GL_ATTACHED_SHADERS = 35717 };
enum { GL_ACTIVE_UNIFORMS = 35718 };
enum { GL_ACTIVE_UNIFORM_MAX_LENGTH = 35719 };
enum { GL_SHADER_SOURCE_LENGTH = 35720 };
enum { GL_ACTIVE_ATTRIBUTES = 35721 };
enum { GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 35722 };
enum { GL_FRAGMENT_SHADER_DERIVATIVE_HINT = 35723 };
enum { GL_SHADING_LANGUAGE_VERSION = 35724 };
enum { GL_CURRENT_PROGRAM = 35725 };
enum { GL_POINT_SPRITE_COORD_ORIGIN = 36000 };
enum { GL_LOWER_LEFT = 36001 };
enum { GL_UPPER_LEFT = 36002 };
enum { GL_STENCIL_BACK_REF = 36003 };
enum { GL_STENCIL_BACK_VALUE_MASK = 36004 };
enum { GL_STENCIL_BACK_WRITEMASK = 36005 };
enum { GL_PIXEL_PACK_BUFFER = 35051 };
enum { GL_PIXEL_UNPACK_BUFFER = 35052 };
enum { GL_PIXEL_PACK_BUFFER_BINDING = 35053 };
enum { GL_PIXEL_UNPACK_BUFFER_BINDING = 35055 };
enum { GL_FLOAT_MAT2x3 = 35685 };
enum { GL_FLOAT_MAT2x4 = 35686 };
enum { GL_FLOAT_MAT3x2 = 35687 };
enum { GL_FLOAT_MAT3x4 = 35688 };
enum { GL_FLOAT_MAT4x2 = 35689 };
enum { GL_FLOAT_MAT4x3 = 35690 };
enum { GL_SRGB = 35904 };
enum { GL_SRGB8 = 35905 };
enum { GL_SRGB_ALPHA = 35906 };
enum { GL_SRGB8_ALPHA8 = 35907 };
enum { GL_COMPRESSED_SRGB = 35912 };
enum { GL_COMPRESSED_SRGB_ALPHA = 35913 };
enum { GL_COMPARE_REF_TO_TEXTURE = 34894 };
enum { GL_CLIP_DISTANCE0 = 12288 };
enum { GL_CLIP_DISTANCE1 = 12289 };
enum { GL_CLIP_DISTANCE2 = 12290 };
enum { GL_CLIP_DISTANCE3 = 12291 };
enum { GL_CLIP_DISTANCE4 = 12292 };
enum { GL_CLIP_DISTANCE5 = 12293 };
enum { GL_CLIP_DISTANCE6 = 12294 };
enum { GL_CLIP_DISTANCE7 = 12295 };
enum { GL_MAX_CLIP_DISTANCES = 3378 };
enum { GL_MAJOR_VERSION = 33307 };
enum { GL_MINOR_VERSION = 33308 };
enum { GL_NUM_EXTENSIONS = 33309 };
enum { GL_CONTEXT_FLAGS = 33310 };
enum { GL_COMPRESSED_RED = 33317 };
enum { GL_COMPRESSED_RG = 33318 };
enum { GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 1 };
enum { GL_RGBA32F = 34836 };
enum { GL_RGB32F = 34837 };
enum { GL_RGBA16F = 34842 };
enum { GL_RGB16F = 34843 };
enum { GL_VERTEX_ATTRIB_ARRAY_INTEGER = 35069 };
enum { GL_MAX_ARRAY_TEXTURE_LAYERS = 35071 };
enum { GL_MIN_PROGRAM_TEXEL_OFFSET = 35076 };
enum { GL_MAX_PROGRAM_TEXEL_OFFSET = 35077 };
enum { GL_CLAMP_READ_COLOR = 35100 };
enum { GL_FIXED_ONLY = 35101 };
enum { GL_MAX_VARYING_COMPONENTS = 35659 };
enum { GL_TEXTURE_1D_ARRAY = 35864 };
enum { GL_PROXY_TEXTURE_1D_ARRAY = 35865 };
enum { GL_TEXTURE_2D_ARRAY = 35866 };
enum { GL_PROXY_TEXTURE_2D_ARRAY = 35867 };
enum { GL_TEXTURE_BINDING_1D_ARRAY = 35868 };
enum { GL_TEXTURE_BINDING_2D_ARRAY = 35869 };
enum { GL_R11F_G11F_B10F = 35898 };
enum { GL_UNSIGNED_INT_10F_11F_11F_REV = 35899 };
enum { GL_RGB9_E5 = 35901 };
enum { GL_UNSIGNED_INT_5_9_9_9_REV = 35902 };
enum { GL_TEXTURE_SHARED_SIZE = 35903 };
enum { GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 35958 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_MODE = 35967 };
enum { GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968 };
enum { GL_TRANSFORM_FEEDBACK_VARYINGS = 35971 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_START = 35972 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973 };
enum { GL_PRIMITIVES_GENERATED = 35975 };
enum { GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976 };
enum { GL_RASTERIZER_DISCARD = 35977 };
enum { GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978 };
enum { GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979 };
enum { GL_INTERLEAVED_ATTRIBS = 35980 };
enum { GL_SEPARATE_ATTRIBS = 35981 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER = 35982 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983 };
enum { GL_RGBA32UI = 36208 };
enum { GL_RGB32UI = 36209 };
enum { GL_RGBA16UI = 36214 };
enum { GL_RGB16UI = 36215 };
enum { GL_RGBA8UI = 36220 };
enum { GL_RGB8UI = 36221 };
enum { GL_RGBA32I = 36226 };
enum { GL_RGB32I = 36227 };
enum { GL_RGBA16I = 36232 };
enum { GL_RGB16I = 36233 };
enum { GL_RGBA8I = 36238 };
enum { GL_RGB8I = 36239 };
enum { GL_RED_INTEGER = 36244 };
enum { GL_GREEN_INTEGER = 36245 };
enum { GL_BLUE_INTEGER = 36246 };
enum { GL_RGB_INTEGER = 36248 };
enum { GL_RGBA_INTEGER = 36249 };
enum { GL_BGR_INTEGER = 36250 };
enum { GL_BGRA_INTEGER = 36251 };
enum { GL_SAMPLER_1D_ARRAY = 36288 };
enum { GL_SAMPLER_2D_ARRAY = 36289 };
enum { GL_SAMPLER_1D_ARRAY_SHADOW = 36291 };
enum { GL_SAMPLER_2D_ARRAY_SHADOW = 36292 };
enum { GL_SAMPLER_CUBE_SHADOW = 36293 };
enum { GL_UNSIGNED_INT_VEC2 = 36294 };
enum { GL_UNSIGNED_INT_VEC3 = 36295 };
enum { GL_UNSIGNED_INT_VEC4 = 36296 };
enum { GL_INT_SAMPLER_1D = 36297 };
enum { GL_INT_SAMPLER_2D = 36298 };
enum { GL_INT_SAMPLER_3D = 36299 };
enum { GL_INT_SAMPLER_CUBE = 36300 };
enum { GL_INT_SAMPLER_1D_ARRAY = 36302 };
enum { GL_INT_SAMPLER_2D_ARRAY = 36303 };
enum { GL_UNSIGNED_INT_SAMPLER_1D = 36305 };
enum { GL_UNSIGNED_INT_SAMPLER_2D = 36306 };
enum { GL_UNSIGNED_INT_SAMPLER_3D = 36307 };
enum { GL_UNSIGNED_INT_SAMPLER_CUBE = 36308 };
enum { GL_UNSIGNED_INT_SAMPLER_1D_ARRAY = 36310 };
enum { GL_UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311 };
enum { GL_QUERY_WAIT = 36371 };
enum { GL_QUERY_NO_WAIT = 36372 };
enum { GL_QUERY_BY_REGION_WAIT = 36373 };
enum { GL_QUERY_BY_REGION_NO_WAIT = 36374 };
enum { GL_BUFFER_ACCESS_FLAGS = 37151 };
enum { GL_BUFFER_MAP_LENGTH = 37152 };
enum { GL_BUFFER_MAP_OFFSET = 37153 };
enum { GL_SAMPLER_2D_RECT = 35683 };
enum { GL_SAMPLER_2D_RECT_SHADOW = 35684 };
enum { GL_SAMPLER_BUFFER = 36290 };
enum { GL_INT_SAMPLER_2D_RECT = 36301 };
enum { GL_INT_SAMPLER_BUFFER = 36304 };
enum { GL_UNSIGNED_INT_SAMPLER_2D_RECT = 36309 };
enum { GL_UNSIGNED_INT_SAMPLER_BUFFER = 36312 };
enum { GL_TEXTURE_BUFFER = 35882 };
enum { GL_MAX_TEXTURE_BUFFER_SIZE = 35883 };
enum { GL_TEXTURE_BINDING_BUFFER = 35884 };
enum { GL_TEXTURE_BUFFER_DATA_STORE_BINDING = 35885 };
enum { GL_TEXTURE_RECTANGLE = 34037 };
enum { GL_TEXTURE_BINDING_RECTANGLE = 34038 };
enum { GL_PROXY_TEXTURE_RECTANGLE = 34039 };
enum { GL_MAX_RECTANGLE_TEXTURE_SIZE = 34040 };
enum { GL_R8_SNORM = 36756 };
enum { GL_RG8_SNORM = 36757 };
enum { GL_RGB8_SNORM = 36758 };
enum { GL_RGBA8_SNORM = 36759 };
enum { GL_R16_SNORM = 36760 };
enum { GL_RG16_SNORM = 36761 };
enum { GL_RGB16_SNORM = 36762 };
enum { GL_RGBA16_SNORM = 36763 };
enum { GL_SIGNED_NORMALIZED = 36764 };
enum { GL_PRIMITIVE_RESTART = 36765 };
enum { GL_PRIMITIVE_RESTART_INDEX = 36766 };
enum { GL_CONTEXT_CORE_PROFILE_BIT = 1 };
enum { GL_CONTEXT_COMPATIBILITY_PROFILE_BIT = 2 };
enum { GL_LINES_ADJACENCY = 10 };
enum { GL_LINE_STRIP_ADJACENCY = 11 };
enum { GL_TRIANGLES_ADJACENCY = 12 };
enum { GL_TRIANGLE_STRIP_ADJACENCY = 13 };
enum { GL_PROGRAM_POINT_SIZE = 34370 };
enum { GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 35881 };
enum { GL_FRAMEBUFFER_ATTACHMENT_LAYERED = 36263 };
enum { GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 36264 };
enum { GL_GEOMETRY_SHADER = 36313 };
enum { GL_GEOMETRY_VERTICES_OUT = 35094 };
enum { GL_GEOMETRY_INPUT_TYPE = 35095 };
enum { GL_GEOMETRY_OUTPUT_TYPE = 35096 };
enum { GL_MAX_GEOMETRY_UNIFORM_COMPONENTS = 36319 };
enum { GL_MAX_GEOMETRY_OUTPUT_VERTICES = 36320 };
enum { GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 36321 };
enum { GL_MAX_VERTEX_OUTPUT_COMPONENTS = 37154 };
enum { GL_MAX_GEOMETRY_INPUT_COMPONENTS = 37155 };
enum { GL_MAX_GEOMETRY_OUTPUT_COMPONENTS = 37156 };
enum { GL_MAX_FRAGMENT_INPUT_COMPONENTS = 37157 };
enum { GL_CONTEXT_PROFILE_MASK = 37158 };
enum { GL_VERTEX_ATTRIB_ARRAY_DIVISOR = 35070 };
enum { GL_SAMPLE_SHADING = 35894 };
enum { GL_MIN_SAMPLE_SHADING_VALUE = 35895 };
enum { GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 36446 };
enum { GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 36447 };
enum { GL_TEXTURE_CUBE_MAP_ARRAY = 36873 };
enum { GL_TEXTURE_BINDING_CUBE_MAP_ARRAY = 36874 };
enum { GL_PROXY_TEXTURE_CUBE_MAP_ARRAY = 36875 };
enum { GL_SAMPLER_CUBE_MAP_ARRAY = 36876 };
enum { GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW = 36877 };
enum { GL_INT_SAMPLER_CUBE_MAP_ARRAY = 36878 };
enum { GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 36879 };
enum { GL_DEPTH_COMPONENT32F = 36012 };
enum { GL_DEPTH32F_STENCIL8 = 36013 };
enum { GL_FLOAT_32_UNSIGNED_INT_24_8_REV = 36269 };
enum { GL_INVALID_FRAMEBUFFER_OPERATION = 1286 };
enum { GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296 };
enum { GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297 };
enum { GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298 };
enum { GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299 };
enum { GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300 };
enum { GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301 };
enum { GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302 };
enum { GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303 };
enum { GL_FRAMEBUFFER_DEFAULT = 33304 };
enum { GL_FRAMEBUFFER_UNDEFINED = 33305 };
enum { GL_DEPTH_STENCIL_ATTACHMENT = 33306 };
enum { GL_MAX_RENDERBUFFER_SIZE = 34024 };
enum { GL_DEPTH_STENCIL = 34041 };
enum { GL_UNSIGNED_INT_24_8 = 34042 };
enum { GL_DEPTH24_STENCIL8 = 35056 };
enum { GL_TEXTURE_STENCIL_SIZE = 35057 };
enum { GL_TEXTURE_RED_TYPE = 35856 };
enum { GL_TEXTURE_GREEN_TYPE = 35857 };
enum { GL_TEXTURE_BLUE_TYPE = 35858 };
enum { GL_TEXTURE_ALPHA_TYPE = 35859 };
enum { GL_TEXTURE_DEPTH_TYPE = 35862 };
enum { GL_UNSIGNED_NORMALIZED = 35863 };
enum { GL_FRAMEBUFFER_BINDING = 36006 };
enum { GL_DRAW_FRAMEBUFFER_BINDING = 36006 };
enum { GL_RENDERBUFFER_BINDING = 36007 };
enum { GL_READ_FRAMEBUFFER = 36008 };
enum { GL_DRAW_FRAMEBUFFER = 36009 };
enum { GL_READ_FRAMEBUFFER_BINDING = 36010 };
enum { GL_RENDERBUFFER_SAMPLES = 36011 };
enum { GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048 };
enum { GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049 };
enum { GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050 };
enum { GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051 };
enum { GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052 };
enum { GL_FRAMEBUFFER_COMPLETE = 36053 };
enum { GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054 };
enum { GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055 };
enum { GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 36059 };
enum { GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 36060 };
enum { GL_FRAMEBUFFER_UNSUPPORTED = 36061 };
enum { GL_MAX_COLOR_ATTACHMENTS = 36063 };
enum { GL_COLOR_ATTACHMENT0 = 36064 };
enum { GL_COLOR_ATTACHMENT1 = 36065 };
enum { GL_COLOR_ATTACHMENT2 = 36066 };
enum { GL_COLOR_ATTACHMENT3 = 36067 };
enum { GL_COLOR_ATTACHMENT4 = 36068 };
enum { GL_COLOR_ATTACHMENT5 = 36069 };
enum { GL_COLOR_ATTACHMENT6 = 36070 };
enum { GL_COLOR_ATTACHMENT7 = 36071 };
enum { GL_COLOR_ATTACHMENT8 = 36072 };
enum { GL_COLOR_ATTACHMENT9 = 36073 };
enum { GL_COLOR_ATTACHMENT10 = 36074 };
enum { GL_COLOR_ATTACHMENT11 = 36075 };
enum { GL_COLOR_ATTACHMENT12 = 36076 };
enum { GL_COLOR_ATTACHMENT13 = 36077 };
enum { GL_COLOR_ATTACHMENT14 = 36078 };
enum { GL_COLOR_ATTACHMENT15 = 36079 };
enum { GL_DEPTH_ATTACHMENT = 36096 };
enum { GL_STENCIL_ATTACHMENT = 36128 };
enum { GL_FRAMEBUFFER = 36160 };
enum { GL_RENDERBUFFER = 36161 };
enum { GL_RENDERBUFFER_WIDTH = 36162 };
enum { GL_RENDERBUFFER_HEIGHT = 36163 };
enum { GL_RENDERBUFFER_INTERNAL_FORMAT = 36164 };
enum { GL_STENCIL_INDEX1 = 36166 };
enum { GL_STENCIL_INDEX4 = 36167 };
enum { GL_STENCIL_INDEX8 = 36168 };
enum { GL_STENCIL_INDEX16 = 36169 };
enum { GL_RENDERBUFFER_RED_SIZE = 36176 };
enum { GL_RENDERBUFFER_GREEN_SIZE = 36177 };
enum { GL_RENDERBUFFER_BLUE_SIZE = 36178 };
enum { GL_RENDERBUFFER_ALPHA_SIZE = 36179 };
enum { GL_RENDERBUFFER_DEPTH_SIZE = 36180 };
enum { GL_RENDERBUFFER_STENCIL_SIZE = 36181 };
enum { GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182 };
enum { GL_MAX_SAMPLES = 36183 };
enum { GL_FRAMEBUFFER_SRGB = 36281 };
enum { GL_HALF_FLOAT = 5131 };
enum { GL_MAP_READ_BIT = 1 };
enum { GL_MAP_WRITE_BIT = 2 };
enum { GL_MAP_INVALIDATE_RANGE_BIT = 4 };
enum { GL_MAP_INVALIDATE_BUFFER_BIT = 8 };
enum { GL_MAP_FLUSH_EXPLICIT_BIT = 16 };
enum { GL_MAP_UNSYNCHRONIZED_BIT = 32 };
enum { GL_COMPRESSED_RED_RGTC1 = 36283 };
enum { GL_COMPRESSED_SIGNED_RED_RGTC1 = 36284 };
enum { GL_COMPRESSED_RG_RGTC2 = 36285 };
enum { GL_COMPRESSED_SIGNED_RG_RGTC2 = 36286 };
enum { GL_RG = 33319 };
enum { GL_RG_INTEGER = 33320 };
enum { GL_R8 = 33321 };
enum { GL_R16 = 33322 };
enum { GL_RG8 = 33323 };
enum { GL_RG16 = 33324 };
enum { GL_R16F = 33325 };
enum { GL_R32F = 33326 };
enum { GL_RG16F = 33327 };
enum { GL_RG32F = 33328 };
enum { GL_R8I = 33329 };
enum { GL_R8UI = 33330 };
enum { GL_R16I = 33331 };
enum { GL_R16UI = 33332 };
enum { GL_R32I = 33333 };
enum { GL_R32UI = 33334 };
enum { GL_RG8I = 33335 };
enum { GL_RG8UI = 33336 };
enum { GL_RG16I = 33337 };
enum { GL_RG16UI = 33338 };
enum { GL_RG32I = 33339 };
enum { GL_RG32UI = 33340 };
enum { GL_VERTEX_ARRAY_BINDING = 34229 };
enum { GL_UNIFORM_BUFFER = 35345 };
enum { GL_UNIFORM_BUFFER_BINDING = 35368 };
enum { GL_UNIFORM_BUFFER_START = 35369 };
enum { GL_UNIFORM_BUFFER_SIZE = 35370 };
enum { GL_MAX_VERTEX_UNIFORM_BLOCKS = 35371 };
enum { GL_MAX_GEOMETRY_UNIFORM_BLOCKS = 35372 };
enum { GL_MAX_FRAGMENT_UNIFORM_BLOCKS = 35373 };
enum { GL_MAX_COMBINED_UNIFORM_BLOCKS = 35374 };
enum { GL_MAX_UNIFORM_BUFFER_BINDINGS = 35375 };
enum { GL_MAX_UNIFORM_BLOCK_SIZE = 35376 };
enum { GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377 };
enum { GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 35378 };
enum { GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379 };
enum { GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380 };
enum { GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 35381 };
enum { GL_ACTIVE_UNIFORM_BLOCKS = 35382 };
enum { GL_UNIFORM_TYPE = 35383 };
enum { GL_UNIFORM_SIZE = 35384 };
enum { GL_UNIFORM_NAME_LENGTH = 35385 };
enum { GL_UNIFORM_BLOCK_INDEX = 35386 };
enum { GL_UNIFORM_OFFSET = 35387 };
enum { GL_UNIFORM_ARRAY_STRIDE = 35388 };
enum { GL_UNIFORM_MATRIX_STRIDE = 35389 };
enum { GL_UNIFORM_IS_ROW_MAJOR = 35390 };
enum { GL_UNIFORM_BLOCK_BINDING = 35391 };
enum { GL_UNIFORM_BLOCK_DATA_SIZE = 35392 };
enum { GL_UNIFORM_BLOCK_NAME_LENGTH = 35393 };
enum { GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394 };
enum { GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395 };
enum { GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396 };
enum { GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 35397 };
enum { GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398 };
enum { GL_INVALID_INDEX = 0xFFFFFFFFu };
enum { GL_COPY_READ_BUFFER = 36662 };
enum { GL_COPY_WRITE_BUFFER = 36663 };
enum { GL_DEPTH_CLAMP = 34383 };
enum { GL_FIRST_VERTEX_CONVENTION = 36429 };
enum { GL_LAST_VERTEX_CONVENTION = 36430 };
enum { GL_PROVOKING_VERTEX = 36431 };
enum { GL_TEXTURE_CUBE_MAP_SEAMLESS = 34895 };
enum { GL_MAX_SERVER_WAIT_TIMEOUT = 37137 };
enum { GL_OBJECT_TYPE = 37138 };
enum { GL_SYNC_CONDITION = 37139 };
enum { GL_SYNC_STATUS = 37140 };
enum { GL_SYNC_FLAGS = 37141 };
enum { GL_SYNC_FENCE = 37142 };
enum { GL_SYNC_GPU_COMMANDS_COMPLETE = 37143 };
enum { GL_UNSIGNALED = 37144 };
enum { GL_SIGNALED = 37145 };
enum { GL_ALREADY_SIGNALED = 37146 };
enum { GL_TIMEOUT_EXPIRED = 37147 };
enum { GL_CONDITION_SATISFIED = 37148 };
enum { GL_WAIT_FAILED = 37149 };
enum { GL_SYNC_FLUSH_COMMANDS_BIT = 1 };
/* #define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull ### string, not number "0xFFFFFFFFFFFFFFFFull" */
enum { GL_SAMPLE_POSITION = 36432 };
enum { GL_SAMPLE_MASK = 36433 };
enum { GL_SAMPLE_MASK_VALUE = 36434 };
enum { GL_MAX_SAMPLE_MASK_WORDS = 36441 };
enum { GL_TEXTURE_2D_MULTISAMPLE = 37120 };
enum { GL_PROXY_TEXTURE_2D_MULTISAMPLE = 37121 };
enum { GL_TEXTURE_2D_MULTISAMPLE_ARRAY = 37122 };
enum { GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 37123 };
enum { GL_TEXTURE_BINDING_2D_MULTISAMPLE = 37124 };
enum { GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 37125 };
enum { GL_TEXTURE_SAMPLES = 37126 };
enum { GL_TEXTURE_FIXED_SAMPLE_LOCATIONS = 37127 };
enum { GL_SAMPLER_2D_MULTISAMPLE = 37128 };
enum { GL_INT_SAMPLER_2D_MULTISAMPLE = 37129 };
enum { GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 37130 };
enum { GL_SAMPLER_2D_MULTISAMPLE_ARRAY = 37131 };
enum { GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37132 };
enum { GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 37133 };
enum { GL_MAX_COLOR_TEXTURE_SAMPLES = 37134 };
enum { GL_MAX_DEPTH_TEXTURE_SAMPLES = 37135 };
enum { GL_MAX_INTEGER_SAMPLES = 37136 };
enum { GL_SRC1_COLOR = 35065 };
enum { GL_SRC1_ALPHA = 34185 };
enum { GL_ONE_MINUS_SRC1_COLOR = 35066 };
enum { GL_ONE_MINUS_SRC1_ALPHA = 35067 };
enum { GL_MAX_DUAL_SOURCE_DRAW_BUFFERS = 35068 };
enum { GL_ANY_SAMPLES_PASSED = 35887 };
enum { GL_SAMPLER_BINDING = 35097 };
enum { GL_RGB10_A2UI = 36975 };
enum { GL_TEXTURE_SWIZZLE_R = 36418 };
enum { GL_TEXTURE_SWIZZLE_G = 36419 };
enum { GL_TEXTURE_SWIZZLE_B = 36420 };
enum { GL_TEXTURE_SWIZZLE_A = 36421 };
enum { GL_TEXTURE_SWIZZLE_RGBA = 36422 };
enum { GL_TIME_ELAPSED = 35007 };
enum { GL_TIMESTAMP = 36392 };
enum { GL_INT_2_10_10_10_REV = 36255 };
enum { GL_DRAW_INDIRECT_BUFFER = 36671 };
enum { GL_DRAW_INDIRECT_BUFFER_BINDING = 36675 };
enum { GL_GEOMETRY_SHADER_INVOCATIONS = 34943 };
enum { GL_MAX_GEOMETRY_SHADER_INVOCATIONS = 36442 };
enum { GL_MIN_FRAGMENT_INTERPOLATION_OFFSET = 36443 };
enum { GL_MAX_FRAGMENT_INTERPOLATION_OFFSET = 36444 };
enum { GL_FRAGMENT_INTERPOLATION_OFFSET_BITS = 36445 };
enum { GL_DOUBLE_VEC2 = 36860 };
enum { GL_DOUBLE_VEC3 = 36861 };
enum { GL_DOUBLE_VEC4 = 36862 };
enum { GL_DOUBLE_MAT2 = 36678 };
enum { GL_DOUBLE_MAT3 = 36679 };
enum { GL_DOUBLE_MAT4 = 36680 };
enum { GL_DOUBLE_MAT2x3 = 36681 };
enum { GL_DOUBLE_MAT2x4 = 36682 };
enum { GL_DOUBLE_MAT3x2 = 36683 };
enum { GL_DOUBLE_MAT3x4 = 36684 };
enum { GL_DOUBLE_MAT4x2 = 36685 };
enum { GL_DOUBLE_MAT4x3 = 36686 };
enum { GL_ACTIVE_SUBROUTINES = 36325 };
enum { GL_ACTIVE_SUBROUTINE_UNIFORMS = 36326 };
enum { GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 36423 };
enum { GL_ACTIVE_SUBROUTINE_MAX_LENGTH = 36424 };
enum { GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 36425 };
enum { GL_MAX_SUBROUTINES = 36327 };
enum { GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS = 36328 };
enum { GL_NUM_COMPATIBLE_SUBROUTINES = 36426 };
enum { GL_COMPATIBLE_SUBROUTINES = 36427 };
enum { GL_PATCHES = 14 };
enum { GL_PATCH_VERTICES = 36466 };
enum { GL_PATCH_DEFAULT_INNER_LEVEL = 36467 };
enum { GL_PATCH_DEFAULT_OUTER_LEVEL = 36468 };
enum { GL_TESS_CONTROL_OUTPUT_VERTICES = 36469 };
enum { GL_TESS_GEN_MODE = 36470 };
enum { GL_TESS_GEN_SPACING = 36471 };
enum { GL_TESS_GEN_VERTEX_ORDER = 36472 };
enum { GL_TESS_GEN_POINT_MODE = 36473 };
enum { GL_QUADS = 7 };
enum { GL_ISOLINES = 36474 };
enum { GL_FRACTIONAL_ODD = 36475 };
enum { GL_FRACTIONAL_EVEN = 36476 };
enum { GL_MAX_PATCH_VERTICES = 36477 };
enum { GL_MAX_TESS_GEN_LEVEL = 36478 };
enum { GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 36479 };
enum { GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 36480 };
enum { GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 36481 };
enum { GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 36482 };
enum { GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 36483 };
enum { GL_MAX_TESS_PATCH_COMPONENTS = 36484 };
enum { GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 36485 };
enum { GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 36486 };
enum { GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS = 36489 };
enum { GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 36490 };
enum { GL_MAX_TESS_CONTROL_INPUT_COMPONENTS = 34924 };
enum { GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS = 34925 };
enum { GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 36382 };
enum { GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 36383 };
enum { GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 34032 };
enum { GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 34033 };
enum { GL_TESS_EVALUATION_SHADER = 36487 };
enum { GL_TESS_CONTROL_SHADER = 36488 };
enum { GL_TRANSFORM_FEEDBACK = 36386 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED = 36387 };
enum { GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 36388 };
enum { GL_TRANSFORM_FEEDBACK_BINDING = 36389 };
enum { GL_MAX_TRANSFORM_FEEDBACK_BUFFERS = 36464 };
enum { GL_MAX_VERTEX_STREAMS = 36465 };
enum { GL_FIXED = 5132 };
enum { GL_IMPLEMENTATION_COLOR_READ_TYPE = 35738 };
enum { GL_IMPLEMENTATION_COLOR_READ_FORMAT = 35739 };
enum { GL_LOW_FLOAT = 36336 };
enum { GL_MEDIUM_FLOAT = 36337 };
enum { GL_HIGH_FLOAT = 36338 };
enum { GL_LOW_INT = 36339 };
enum { GL_MEDIUM_INT = 36340 };
enum { GL_HIGH_INT = 36341 };
enum { GL_SHADER_COMPILER = 36346 };
enum { GL_SHADER_BINARY_FORMATS = 36344 };
enum { GL_NUM_SHADER_BINARY_FORMATS = 36345 };
enum { GL_MAX_VERTEX_UNIFORM_VECTORS = 36347 };
enum { GL_MAX_VARYING_VECTORS = 36348 };
enum { GL_MAX_FRAGMENT_UNIFORM_VECTORS = 36349 };
enum { GL_RGB565 = 36194 };
enum { GL_PROGRAM_BINARY_RETRIEVABLE_HINT = 33367 };
enum { GL_PROGRAM_BINARY_LENGTH = 34625 };
enum { GL_NUM_PROGRAM_BINARY_FORMATS = 34814 };
enum { GL_PROGRAM_BINARY_FORMATS = 34815 };
enum { GL_VERTEX_SHADER_BIT = 1 };
enum { GL_FRAGMENT_SHADER_BIT = 2 };
enum { GL_GEOMETRY_SHADER_BIT = 4 };
enum { GL_TESS_CONTROL_SHADER_BIT = 8 };
enum { GL_TESS_EVALUATION_SHADER_BIT = 16 };
enum { GL_ALL_SHADER_BITS = 4294967295 };
enum { GL_PROGRAM_SEPARABLE = 33368 };
enum { GL_ACTIVE_PROGRAM = 33369 };
enum { GL_PROGRAM_PIPELINE_BINDING = 33370 };
enum { GL_MAX_VIEWPORTS = 33371 };
enum { GL_VIEWPORT_SUBPIXEL_BITS = 33372 };
enum { GL_VIEWPORT_BOUNDS_RANGE = 33373 };
enum { GL_LAYER_PROVOKING_VERTEX = 33374 };
enum { GL_VIEWPORT_INDEX_PROVOKING_VERTEX = 33375 };
enum { GL_UNDEFINED_VERTEX = 33376 };
enum { GL_VERSION_1_0 = 1 };
extern void glCullFace (GLenum mode);
extern void glFrontFace (GLenum mode);
extern void glHint (GLenum target, GLenum mode);
extern void glLineWidth (GLfloat width);
extern void glPointSize (GLfloat size);
extern void glPolygonMode (GLenum face, GLenum mode);
extern void glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
extern void glTexParameterf (GLenum target, GLenum pname, GLfloat param);
extern void glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params);
extern void glTexParameteri (GLenum target, GLenum pname, GLint param);
extern void glTexParameteriv (GLenum target, GLenum pname, const GLint *params);
extern void glTexImage1D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern void glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern void glDrawBuffer (GLenum mode);
extern void glClear (GLbitfield mask);
extern void glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
extern void glClearStencil (GLint s);
extern void glClearDepth (GLclampd depth);
extern void glStencilMask (GLuint mask);
extern void glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
extern void glDepthMask (GLboolean flag);
extern void glDisable (GLenum cap);
extern void glEnable (GLenum cap);
extern void glFinish (void);
extern void glFlush (void);
extern void glBlendFunc (GLenum sfactor, GLenum dfactor);
extern void glLogicOp (GLenum opcode);
extern void glStencilFunc (GLenum func, GLint ref, GLuint mask);
extern void glStencilOp (GLenum fail, GLenum zfail, GLenum zpass);
extern void glDepthFunc (GLenum func);
extern void glPixelStoref (GLenum pname, GLfloat param);
extern void glPixelStorei (GLenum pname, GLint param);
extern void glReadBuffer (GLenum mode);
extern void glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
extern void glGetBooleanv (GLenum pname, GLboolean *params);
extern void glGetDoublev (GLenum pname, GLdouble *params);
extern GLenum glGetError (void);
extern void glGetFloatv (GLenum pname, GLfloat *params);
extern void glGetIntegerv (GLenum pname, GLint *params);
extern const GLubyte * glGetString (GLenum name);
extern void glGetTexImage (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
extern void glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params);
extern void glGetTexParameteriv (GLenum target, GLenum pname, GLint *params);
extern void glGetTexLevelParameterfv (GLenum target, GLint level, GLenum pname, GLfloat *params);
extern void glGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint *params);
extern GLboolean glIsEnabled (GLenum cap);
extern void glDepthRange (GLclampd near, GLclampd far);
extern void glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void ( * PFNGLCULLFACEPROC) (GLenum mode);
typedef void ( * PFNGLFRONTFACEPROC) (GLenum mode);
typedef void ( * PFNGLHINTPROC) (GLenum target, GLenum mode);
typedef void ( * PFNGLLINEWIDTHPROC) (GLfloat width);
typedef void ( * PFNGLPOINTSIZEPROC) (GLfloat size);
typedef void ( * PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
typedef void ( * PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
typedef void ( * PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
typedef void ( * PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
typedef void ( * PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
typedef void ( * PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void ( * PFNGLTEXIMAGE1DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLDRAWBUFFERPROC) (GLenum mode);
typedef void ( * PFNGLCLEARPROC) (GLbitfield mask);
typedef void ( * PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void ( * PFNGLCLEARSTENCILPROC) (GLint s);
typedef void ( * PFNGLCLEARDEPTHPROC) (GLclampd depth);
typedef void ( * PFNGLSTENCILMASKPROC) (GLuint mask);
typedef void ( * PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void ( * PFNGLDEPTHMASKPROC) (GLboolean flag);
typedef void ( * PFNGLDISABLEPROC) (GLenum cap);
typedef void ( * PFNGLENABLEPROC) (GLenum cap);
typedef void ( * PFNGLFINISHPROC) (void);
typedef void ( * PFNGLFLUSHPROC) (void);
typedef void ( * PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor);
typedef void ( * PFNGLLOGICOPPROC) (GLenum opcode);
typedef void ( * PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
typedef void ( * PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
typedef void ( * PFNGLDEPTHFUNCPROC) (GLenum func);
typedef void ( * PFNGLPIXELSTOREFPROC) (GLenum pname, GLfloat param);
typedef void ( * PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
typedef void ( * PFNGLREADBUFFERPROC) (GLenum mode);
typedef void ( * PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
typedef void ( * PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *params);
typedef void ( * PFNGLGETDOUBLEVPROC) (GLenum pname, GLdouble *params);
typedef GLenum ( * PFNGLGETERRORPROC) (void);
typedef void ( * PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *params);
typedef void ( * PFNGLGETINTEGERVPROC) (GLenum pname, GLint *params);
typedef const GLubyte * ( * PFNGLGETSTRINGPROC) (GLenum name);
typedef void ( * PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
typedef void ( * PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params);
typedef void ( * PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void ( * PFNGLGETTEXLEVELPARAMETERFVPROC) (GLenum target, GLint level, GLenum pname, GLfloat *params);
typedef void ( * PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint *params);
typedef GLboolean ( * PFNGLISENABLEDPROC) (GLenum cap);
typedef void ( * PFNGLDEPTHRANGEPROC) (GLclampd near, GLclampd far);
typedef void ( * PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
enum { GL_VERSION_1_1 = 1 };
extern void glDrawArrays (GLenum mode, GLint first, GLsizei count);
extern void glDrawElements (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
extern void glPolygonOffset (GLfloat factor, GLfloat units);
extern void glCopyTexImage1D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
extern void glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
extern void glCopyTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
extern void glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
extern void glTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
extern void glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
extern void glBindTexture (GLenum target, GLuint texture);
extern void glDeleteTextures (GLsizei n, const GLuint *textures);
extern void glGenTextures (GLsizei n, GLuint *textures);
extern GLboolean glIsTexture (GLuint texture);
typedef void ( * PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
typedef void ( * PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
typedef void ( * PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units);
typedef void ( * PFNGLCOPYTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef void ( * PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void ( * PFNGLCOPYTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef void ( * PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void ( * PFNGLTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
typedef void ( * PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
typedef void ( * PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
typedef GLboolean ( * PFNGLISTEXTUREPROC) (GLuint texture);
enum { GL_VERSION_1_2 = 1 };
extern void glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
extern void glBlendEquation (GLenum mode);
extern void glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
extern void glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
extern void glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
extern void glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void ( * PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void ( * PFNGLBLENDEQUATIONPROC) (GLenum mode);
typedef void ( * PFNGLDRAWRANGEELEMENTSPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
typedef void ( * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
typedef void ( * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
enum { GL_VERSION_1_3 = 1 };
extern void glActiveTexture (GLenum texture);
extern void glSampleCoverage (GLclampf value, GLboolean invert);
extern void glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
extern void glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
extern void glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
extern void glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
extern void glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
extern void glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
extern void glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img);
typedef void ( * PFNGLACTIVETEXTUREPROC) (GLenum texture);
typedef void ( * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
typedef void ( * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLCOMPRESSEDTEXIMAGE1DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
typedef void ( * PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint level, GLvoid *img);
enum { GL_VERSION_1_4 = 1 };
extern void glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
extern void glMultiDrawArrays (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
extern void glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount);
extern void glPointParameterf (GLenum pname, GLfloat param);
extern void glPointParameterfv (GLenum pname, const GLfloat *params);
extern void glPointParameteri (GLenum pname, GLint param);
extern void glPointParameteriv (GLenum pname, const GLint *params);
typedef void ( * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void ( * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei drawcount);
typedef void ( * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount);
typedef void ( * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
typedef void ( * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
typedef void ( * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
typedef void ( * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
enum { GL_VERSION_1_5 = 1 };
extern void glGenQueries (GLsizei n, GLuint *ids);
extern void glDeleteQueries (GLsizei n, const GLuint *ids);
extern GLboolean glIsQuery (GLuint id);
extern void glBeginQuery (GLenum target, GLuint id);
extern void glEndQuery (GLenum target);
extern void glGetQueryiv (GLenum target, GLenum pname, GLint *params);
extern void glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
extern void glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
extern void glBindBuffer (GLenum target, GLuint buffer);
extern void glDeleteBuffers (GLsizei n, const GLuint *buffers);
extern void glGenBuffers (GLsizei n, GLuint *buffers);
extern GLboolean glIsBuffer (GLuint buffer);
extern void glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
extern void glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
extern void glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
extern GLvoid* glMapBuffer (GLenum target, GLenum access);
extern GLboolean glUnmapBuffer (GLenum target);
extern void glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
extern void glGetBufferPointerv (GLenum target, GLenum pname, GLvoid* *params);
typedef void ( * PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
typedef void ( * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
typedef GLboolean ( * PFNGLISQUERYPROC) (GLuint id);
typedef void ( * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
typedef void ( * PFNGLENDQUERYPROC) (GLenum target);
typedef void ( * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void ( * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint *params);
typedef void ( * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint *params);
typedef void ( * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
typedef void ( * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
typedef void ( * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
typedef GLboolean ( * PFNGLISBUFFERPROC) (GLuint buffer);
typedef void ( * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
typedef void ( * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
typedef void ( * PFNGLGETBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
typedef GLvoid* ( * PFNGLMAPBUFFERPROC) (GLenum target, GLenum access);
typedef GLboolean ( * PFNGLUNMAPBUFFERPROC) (GLenum target);
typedef void ( * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void ( * PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname, GLvoid* *params);
enum { GL_VERSION_2_0 = 1 };
extern void glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
extern void glDrawBuffers (GLsizei n, const GLenum *bufs);
extern void glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
extern void glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask);
extern void glStencilMaskSeparate (GLenum face, GLuint mask);
extern void glAttachShader (GLuint program, GLuint shader);
extern void glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
extern void glCompileShader (GLuint shader);
extern GLuint glCreateProgram (void);
extern GLuint glCreateShader (GLenum type);
extern void glDeleteProgram (GLuint program);
extern void glDeleteShader (GLuint shader);
extern void glDetachShader (GLuint program, GLuint shader);
extern void glDisableVertexAttribArray (GLuint index);
extern void glEnableVertexAttribArray (GLuint index);
extern void glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
extern void glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
extern void glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
extern GLint glGetAttribLocation (GLuint program, const GLchar *name);
extern void glGetProgramiv (GLuint program, GLenum pname, GLint *params);
extern void glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
extern void glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
extern void glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
extern void glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
extern GLint glGetUniformLocation (GLuint program, const GLchar *name);
extern void glGetUniformfv (GLuint program, GLint location, GLfloat *params);
extern void glGetUniformiv (GLuint program, GLint location, GLint *params);
extern void glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
extern void glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
extern void glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
extern void glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid* *pointer);
extern GLboolean glIsProgram (GLuint program);
extern GLboolean glIsShader (GLuint shader);
extern void glLinkProgram (GLuint program);
extern void glShaderSource (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length);
extern void glUseProgram (GLuint program);
extern void glUniform1f (GLint location, GLfloat v0);
extern void glUniform2f (GLint location, GLfloat v0, GLfloat v1);
extern void glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
extern void glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
extern void glUniform1i (GLint location, GLint v0);
extern void glUniform2i (GLint location, GLint v0, GLint v1);
extern void glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
extern void glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
extern void glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
extern void glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
extern void glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
extern void glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
extern void glUniform1iv (GLint location, GLsizei count, const GLint *value);
extern void glUniform2iv (GLint location, GLsizei count, const GLint *value);
extern void glUniform3iv (GLint location, GLsizei count, const GLint *value);
extern void glUniform4iv (GLint location, GLsizei count, const GLint *value);
extern void glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glValidateProgram (GLuint program);
extern void glVertexAttrib1d (GLuint index, GLdouble x);
extern void glVertexAttrib1dv (GLuint index, const GLdouble *v);
extern void glVertexAttrib1f (GLuint index, GLfloat x);
extern void glVertexAttrib1fv (GLuint index, const GLfloat *v);
extern void glVertexAttrib1s (GLuint index, GLshort x);
extern void glVertexAttrib1sv (GLuint index, const GLshort *v);
extern void glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
extern void glVertexAttrib2dv (GLuint index, const GLdouble *v);
extern void glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
extern void glVertexAttrib2fv (GLuint index, const GLfloat *v);
extern void glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
extern void glVertexAttrib2sv (GLuint index, const GLshort *v);
extern void glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
extern void glVertexAttrib3dv (GLuint index, const GLdouble *v);
extern void glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
extern void glVertexAttrib3fv (GLuint index, const GLfloat *v);
extern void glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
extern void glVertexAttrib3sv (GLuint index, const GLshort *v);
extern void glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
extern void glVertexAttrib4Niv (GLuint index, const GLint *v);
extern void glVertexAttrib4Nsv (GLuint index, const GLshort *v);
extern void glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
extern void glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
extern void glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
extern void glVertexAttrib4Nusv (GLuint index, const GLushort *v);
extern void glVertexAttrib4bv (GLuint index, const GLbyte *v);
extern void glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern void glVertexAttrib4dv (GLuint index, const GLdouble *v);
extern void glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
extern void glVertexAttrib4fv (GLuint index, const GLfloat *v);
extern void glVertexAttrib4iv (GLuint index, const GLint *v);
extern void glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
extern void glVertexAttrib4sv (GLuint index, const GLshort *v);
extern void glVertexAttrib4ubv (GLuint index, const GLubyte *v);
extern void glVertexAttrib4uiv (GLuint index, const GLuint *v);
extern void glVertexAttrib4usv (GLuint index, const GLushort *v);
extern void glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
typedef void ( * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
typedef void ( * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
typedef void ( * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void ( * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask);
typedef void ( * PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask);
typedef void ( * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
typedef void ( * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name);
typedef void ( * PFNGLCOMPILESHADERPROC) (GLuint shader);
typedef GLuint ( * PFNGLCREATEPROGRAMPROC) (void);
typedef GLuint ( * PFNGLCREATESHADERPROC) (GLenum type);
typedef void ( * PFNGLDELETEPROGRAMPROC) (GLuint program);
typedef void ( * PFNGLDELETESHADERPROC) (GLuint shader);
typedef void ( * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
typedef void ( * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void ( * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
typedef void ( * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef void ( * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
typedef void ( * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders);
typedef GLint ( * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
typedef void ( * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
typedef void ( * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void ( * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
typedef void ( * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void ( * PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
typedef GLint ( * PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
typedef void ( * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params);
typedef void ( * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params);
typedef void ( * PFNGLGETVERTEXATTRIBDVPROC) (GLuint index, GLenum pname, GLdouble *params);
typedef void ( * PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params);
typedef void ( * PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params);
typedef void ( * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, GLvoid* *pointer);
typedef GLboolean ( * PFNGLISPROGRAMPROC) (GLuint program);
typedef GLboolean ( * PFNGLISSHADERPROC) (GLuint shader);
typedef void ( * PFNGLLINKPROGRAMPROC) (GLuint program);
typedef void ( * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const *string, const GLint *length);
typedef void ( * PFNGLUSEPROGRAMPROC) (GLuint program);
typedef void ( * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
typedef void ( * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
typedef void ( * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void ( * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void ( * PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
typedef void ( * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
typedef void ( * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
typedef void ( * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void ( * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLVALIDATEPROGRAMPROC) (GLuint program);
typedef void ( * PFNGLVERTEXATTRIB1DPROC) (GLuint index, GLdouble x);
typedef void ( * PFNGLVERTEXATTRIB1DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
typedef void ( * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v);
typedef void ( * PFNGLVERTEXATTRIB1SPROC) (GLuint index, GLshort x);
typedef void ( * PFNGLVERTEXATTRIB1SVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIB2DPROC) (GLuint index, GLdouble x, GLdouble y);
typedef void ( * PFNGLVERTEXATTRIB2DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
typedef void ( * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v);
typedef void ( * PFNGLVERTEXATTRIB2SPROC) (GLuint index, GLshort x, GLshort y);
typedef void ( * PFNGLVERTEXATTRIB2SVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIB3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef void ( * PFNGLVERTEXATTRIB3DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
typedef void ( * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v);
typedef void ( * PFNGLVERTEXATTRIB3SPROC) (GLuint index, GLshort x, GLshort y, GLshort z);
typedef void ( * PFNGLVERTEXATTRIB3SVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIB4NBVPROC) (GLuint index, const GLbyte *v);
typedef void ( * PFNGLVERTEXATTRIB4NIVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIB4NSVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIB4NUBPROC) (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
typedef void ( * PFNGLVERTEXATTRIB4NUBVPROC) (GLuint index, const GLubyte *v);
typedef void ( * PFNGLVERTEXATTRIB4NUIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIB4NUSVPROC) (GLuint index, const GLushort *v);
typedef void ( * PFNGLVERTEXATTRIB4BVPROC) (GLuint index, const GLbyte *v);
typedef void ( * PFNGLVERTEXATTRIB4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void ( * PFNGLVERTEXATTRIB4DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void ( * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v);
typedef void ( * PFNGLVERTEXATTRIB4IVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIB4SPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
typedef void ( * PFNGLVERTEXATTRIB4SVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIB4UBVPROC) (GLuint index, const GLubyte *v);
typedef void ( * PFNGLVERTEXATTRIB4UIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIB4USVPROC) (GLuint index, const GLushort *v);
typedef void ( * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
enum { GL_VERSION_2_1 = 1 };
extern void glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
enum { GL_VERSION_3_0 = 1 };
extern void glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
extern void glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
extern void glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
extern void glEnablei (GLenum target, GLuint index);
extern void glDisablei (GLenum target, GLuint index);
extern GLboolean glIsEnabledi (GLenum target, GLuint index);
extern void glBeginTransformFeedback (GLenum primitiveMode);
extern void glEndTransformFeedback (void);
extern void glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
extern void glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
extern void glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode);
extern void glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
extern void glClampColor (GLenum target, GLenum clamp);
extern void glBeginConditionalRender (GLuint id, GLenum mode);
extern void glEndConditionalRender (void);
extern void glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
extern void glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
extern void glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
extern void glVertexAttribI1i (GLuint index, GLint x);
extern void glVertexAttribI2i (GLuint index, GLint x, GLint y);
extern void glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
extern void glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
extern void glVertexAttribI1ui (GLuint index, GLuint x);
extern void glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
extern void glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
extern void glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
extern void glVertexAttribI1iv (GLuint index, const GLint *v);
extern void glVertexAttribI2iv (GLuint index, const GLint *v);
extern void glVertexAttribI3iv (GLuint index, const GLint *v);
extern void glVertexAttribI4iv (GLuint index, const GLint *v);
extern void glVertexAttribI1uiv (GLuint index, const GLuint *v);
extern void glVertexAttribI2uiv (GLuint index, const GLuint *v);
extern void glVertexAttribI3uiv (GLuint index, const GLuint *v);
extern void glVertexAttribI4uiv (GLuint index, const GLuint *v);
extern void glVertexAttribI4bv (GLuint index, const GLbyte *v);
extern void glVertexAttribI4sv (GLuint index, const GLshort *v);
extern void glVertexAttribI4ubv (GLuint index, const GLubyte *v);
extern void glVertexAttribI4usv (GLuint index, const GLushort *v);
extern void glGetUniformuiv (GLuint program, GLint location, GLuint *params);
extern void glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
extern GLint glGetFragDataLocation (GLuint program, const GLchar *name);
extern void glUniform1ui (GLint location, GLuint v0);
extern void glUniform2ui (GLint location, GLuint v0, GLuint v1);
extern void glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
extern void glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
extern void glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
extern void glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
extern void glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
extern void glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
extern void glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
extern void glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
extern void glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
extern void glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
extern void glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
extern void glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
extern void glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
extern void glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
extern const GLubyte * glGetStringi (GLenum name, GLuint index);
typedef void ( * PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
typedef void ( * PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
typedef void ( * PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
typedef void ( * PFNGLENABLEIPROC) (GLenum target, GLuint index);
typedef void ( * PFNGLDISABLEIPROC) (GLenum target, GLuint index);
typedef GLboolean ( * PFNGLISENABLEDIPROC) (GLenum target, GLuint index);
typedef void ( * PFNGLBEGINTRANSFORMFEEDBACKPROC) (GLenum primitiveMode);
typedef void ( * PFNGLENDTRANSFORMFEEDBACKPROC) (void);
typedef void ( * PFNGLBINDBUFFERRANGEPROC) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
typedef void ( * PFNGLBINDBUFFERBASEPROC) (GLenum target, GLuint index, GLuint buffer);
typedef void ( * PFNGLTRANSFORMFEEDBACKVARYINGSPROC) (GLuint program, GLsizei count, const GLchar* const *varyings, GLenum bufferMode);
typedef void ( * PFNGLGETTRANSFORMFEEDBACKVARYINGPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
typedef void ( * PFNGLCLAMPCOLORPROC) (GLenum target, GLenum clamp);
typedef void ( * PFNGLBEGINCONDITIONALRENDERPROC) (GLuint id, GLenum mode);
typedef void ( * PFNGLENDCONDITIONALRENDERPROC) (void);
typedef void ( * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void ( * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint *params);
typedef void ( * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint *params);
typedef void ( * PFNGLVERTEXATTRIBI1IPROC) (GLuint index, GLint x);
typedef void ( * PFNGLVERTEXATTRIBI2IPROC) (GLuint index, GLint x, GLint y);
typedef void ( * PFNGLVERTEXATTRIBI3IPROC) (GLuint index, GLint x, GLint y, GLint z);
typedef void ( * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
typedef void ( * PFNGLVERTEXATTRIBI1UIPROC) (GLuint index, GLuint x);
typedef void ( * PFNGLVERTEXATTRIBI2UIPROC) (GLuint index, GLuint x, GLuint y);
typedef void ( * PFNGLVERTEXATTRIBI3UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z);
typedef void ( * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
typedef void ( * PFNGLVERTEXATTRIBI1IVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIBI2IVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIBI3IVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLVERTEXATTRIBI1UIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIBI2UIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIBI3UIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint *v);
typedef void ( * PFNGLVERTEXATTRIBI4BVPROC) (GLuint index, const GLbyte *v);
typedef void ( * PFNGLVERTEXATTRIBI4SVPROC) (GLuint index, const GLshort *v);
typedef void ( * PFNGLVERTEXATTRIBI4UBVPROC) (GLuint index, const GLubyte *v);
typedef void ( * PFNGLVERTEXATTRIBI4USVPROC) (GLuint index, const GLushort *v);
typedef void ( * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint *params);
typedef void ( * PFNGLBINDFRAGDATALOCATIONPROC) (GLuint program, GLuint color, const GLchar *name);
typedef GLint ( * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar *name);
typedef void ( * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
typedef void ( * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
typedef void ( * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
typedef void ( * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
typedef void ( * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void ( * PFNGLTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, const GLuint *params);
typedef void ( * PFNGLGETTEXPARAMETERIIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef void ( * PFNGLGETTEXPARAMETERIUIVPROC) (GLenum target, GLenum pname, GLuint *params);
typedef void ( * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint *value);
typedef void ( * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint *value);
typedef void ( * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat *value);
typedef void ( * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
typedef const GLubyte * ( * PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
enum { GL_VERSION_3_1 = 1 };
extern void glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
extern void glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount);
extern void glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
extern void glPrimitiveRestartIndex (GLuint index);
typedef void ( * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount);
typedef void ( * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount);
typedef void ( * PFNGLTEXBUFFERPROC) (GLenum target, GLenum internalformat, GLuint buffer);
typedef void ( * PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
enum { GL_VERSION_3_2 = 1 };
extern void glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
extern void glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
extern void glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
typedef void ( * PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
typedef void ( * PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
typedef void ( * PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
enum { GL_VERSION_3_3 = 1 };
extern void glVertexAttribDivisor (GLuint index, GLuint divisor);
typedef void ( * PFNGLVERTEXATTRIBDIVISORPROC) (GLuint index, GLuint divisor);
enum { GL_VERSION_4_0 = 1 };
extern void glMinSampleShading (GLfloat value);
extern void glBlendEquationi (GLuint buf, GLenum mode);
extern void glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
extern void glBlendFunci (GLuint buf, GLenum src, GLenum dst);
extern void glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
typedef void ( * PFNGLMINSAMPLESHADINGPROC) (GLfloat value);
typedef void ( * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
typedef void ( * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
typedef void ( * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
typedef void ( * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
enum { GL_VERSION_4_1 = 1 };
enum { GL_ARB_depth_buffer_float = 1 };
enum { GL_ARB_framebuffer_object = 1 };
extern GLboolean glIsRenderbuffer (GLuint renderbuffer);
extern void glBindRenderbuffer (GLenum target, GLuint renderbuffer);
extern void glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
extern void glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
extern void glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
extern void glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
extern GLboolean glIsFramebuffer (GLuint framebuffer);
extern void glBindFramebuffer (GLenum target, GLuint framebuffer);
extern void glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
extern void glGenFramebuffers (GLsizei n, GLuint *framebuffers);
extern GLenum glCheckFramebufferStatus (GLenum target);
extern void glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern void glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern void glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
extern void glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
extern void glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
extern void glGenerateMipmap (GLenum target);
extern void glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
extern void glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
extern void glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
typedef GLboolean ( * PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
typedef void ( * PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
typedef void ( * PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers);
typedef void ( * PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers);
typedef void ( * PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
typedef void ( * PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params);
typedef GLboolean ( * PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer);
typedef void ( * PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer);
typedef void ( * PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers);
typedef void ( * PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers);
typedef GLenum ( * PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target);
typedef void ( * PFNGLFRAMEBUFFERTEXTURE1DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void ( * PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
typedef void ( * PFNGLFRAMEBUFFERTEXTURE3DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
typedef void ( * PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
typedef void ( * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params);
typedef void ( * PFNGLGENERATEMIPMAPPROC) (GLenum target);
typedef void ( * PFNGLBLITFRAMEBUFFERPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
typedef void ( * PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
typedef void ( * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
enum { GL_ARB_framebuffer_sRGB = 1 };
enum { GL_ARB_half_float_vertex = 1 };
enum { GL_ARB_map_buffer_range = 1 };
extern GLvoid* glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
extern void glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
typedef GLvoid* ( * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef void ( * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
enum { GL_ARB_texture_compression_rgtc = 1 };
enum { GL_ARB_texture_rg = 1 };
enum { GL_ARB_vertex_array_object = 1 };
extern void glBindVertexArray (GLuint array);
extern void glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
extern void glGenVertexArrays (GLsizei n, GLuint *arrays);
extern GLboolean glIsVertexArray (GLuint array);
typedef void ( * PFNGLBINDVERTEXARRAYPROC) (GLuint array);
typedef void ( * PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
typedef void ( * PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
typedef GLboolean ( * PFNGLISVERTEXARRAYPROC) (GLuint array);
enum { GL_ARB_uniform_buffer_object = 1 };
extern void glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices);
extern void glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
extern void glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
extern GLuint glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
extern void glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
extern void glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
extern void glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
typedef void ( * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* const *uniformNames, GLuint *uniformIndices);
typedef void ( * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
typedef void ( * PFNGLGETACTIVEUNIFORMNAMEPROC) (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
typedef GLuint ( * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar *uniformBlockName);
typedef void ( * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
typedef void ( * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
typedef void ( * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
enum { GL_ARB_copy_buffer = 1 };
extern void glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
typedef void ( * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
enum { GL_ARB_depth_clamp = 1 };
enum { GL_ARB_draw_elements_base_vertex = 1 };
extern void glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
extern void glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
extern void glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex);
extern void glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex);
typedef void ( * PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
typedef void ( * PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
typedef void ( * PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei instancecount, GLint basevertex);
typedef void ( * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei drawcount, const GLint *basevertex);
enum { GL_ARB_fragment_coord_conventions = 1 };
enum { GL_ARB_provoking_vertex = 1 };
extern void glProvokingVertex (GLenum mode);
typedef void ( * PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
enum { GL_ARB_seamless_cube_map = 1 };
enum { GL_ARB_sync = 1 };
extern GLsync glFenceSync (GLenum condition, GLbitfield flags);
extern GLboolean glIsSync (GLsync sync);
extern void glDeleteSync (GLsync sync);
extern GLenum glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
extern void glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
extern void glGetInteger64v (GLenum pname, GLint64 *params);
extern void glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
typedef GLsync ( * PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
typedef GLboolean ( * PFNGLISSYNCPROC) (GLsync sync);
typedef void ( * PFNGLDELETESYNCPROC) (GLsync sync);
typedef GLenum ( * PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
typedef void ( * PFNGLWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
typedef void ( * PFNGLGETINTEGER64VPROC) (GLenum pname, GLint64 *params);
typedef void ( * PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
enum { GL_ARB_texture_multisample = 1 };
extern void glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
extern void glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
extern void glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
extern void glSampleMaski (GLuint index, GLbitfield mask);
typedef void ( * PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef void ( * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
typedef void ( * PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val);
typedef void ( * PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
enum { GL_ARB_vertex_array_bgra = 1 };
enum { GL_ARB_texture_query_lod = 1 };
enum { GL_ARB_blend_func_extended = 1 };
extern void glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
extern GLint glGetFragDataIndex (GLuint program, const GLchar *name);
typedef void ( * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
typedef GLint ( * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
enum { GL_ARB_explicit_attrib_location = 1 };
enum { GL_ARB_occlusion_query2 = 1 };
enum { GL_ARB_sampler_objects = 1 };
extern void glGenSamplers (GLsizei count, GLuint *samplers);
extern void glDeleteSamplers (GLsizei count, const GLuint *samplers);
extern GLboolean glIsSampler (GLuint sampler);
extern void glBindSampler (GLuint unit, GLuint sampler);
extern void glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
extern void glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
extern void glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
extern void glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
extern void glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
extern void glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
extern void glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
extern void glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
extern void glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
extern void glGetSamplerParameterIuiv (GLuint sampler, GLenum pname, GLuint *params);
typedef void ( * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
typedef void ( * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
typedef GLboolean ( * PFNGLISSAMPLERPROC) (GLuint sampler);
typedef void ( * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
typedef void ( * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
typedef void ( * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
typedef void ( * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
typedef void ( * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
typedef void ( * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
typedef void ( * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
typedef void ( * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
typedef void ( * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
typedef void ( * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
typedef void ( * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint *params);
enum { GL_ARB_shader_bit_encoding = 1 };
enum { GL_ARB_texture_rgb10_a2ui = 1 };
enum { GL_ARB_texture_swizzle = 1 };
enum { GL_ARB_timer_query = 1 };
extern void glQueryCounter (GLuint id, GLenum target);
extern void glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
extern void glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
typedef void ( * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
typedef void ( * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
typedef void ( * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
enum { GL_ARB_vertex_type_2_10_10_10_rev = 1 };
extern void glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
extern void glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
extern void glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
extern void glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
extern void glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
extern void glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
extern void glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
extern void glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef void ( * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef void ( * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef void ( * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef void ( * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef void ( * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef void ( * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
typedef void ( * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
typedef void ( * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
enum { GL_ARB_draw_indirect = 1 };
extern void glDrawArraysIndirect (GLenum mode, const GLvoid *indirect);
extern void glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect);
typedef void ( * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect);
typedef void ( * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect);
enum { GL_ARB_gpu_shader5 = 1 };
enum { GL_ARB_gpu_shader_fp64 = 1 };
extern void glUniform1d (GLint location, GLdouble x);
extern void glUniform2d (GLint location, GLdouble x, GLdouble y);
extern void glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
extern void glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern void glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
extern void glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
extern void glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
extern void glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
extern void glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glGetUniformdv (GLuint program, GLint location, GLdouble *params);
typedef void ( * PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
typedef void ( * PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
typedef void ( * PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
typedef void ( * PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void ( * PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
enum { GL_ARB_shader_subroutine = 1 };
extern GLint glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
extern GLuint glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
extern void glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
extern void glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
extern void glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
extern void glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
extern void glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
extern void glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
typedef GLint ( * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
typedef GLuint ( * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
typedef void ( * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
typedef void ( * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
typedef void ( * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
typedef void ( * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
typedef void ( * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
typedef void ( * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
enum { GL_ARB_tessellation_shader = 1 };
extern void glPatchParameteri (GLenum pname, GLint value);
extern void glPatchParameterfv (GLenum pname, const GLfloat *values);
typedef void ( * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
typedef void ( * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
enum { GL_ARB_texture_buffer_object_rgb32 = 1 };
enum { GL_ARB_transform_feedback2 = 1 };
extern void glBindTransformFeedback (GLenum target, GLuint id);
extern void glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
extern void glGenTransformFeedbacks (GLsizei n, GLuint *ids);
extern GLboolean glIsTransformFeedback (GLuint id);
extern void glPauseTransformFeedback (void);
extern void glResumeTransformFeedback (void);
extern void glDrawTransformFeedback (GLenum mode, GLuint id);
typedef void ( * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
typedef void ( * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
typedef void ( * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
typedef GLboolean ( * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
typedef void ( * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
typedef void ( * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
typedef void ( * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
enum { GL_ARB_transform_feedback3 = 1 };
extern void glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
extern void glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
extern void glEndQueryIndexed (GLenum target, GLuint index);
extern void glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
typedef void ( * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
typedef void ( * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
typedef void ( * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
typedef void ( * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
enum { GL_ARB_ES2_compatibility = 1 };
extern void glReleaseShaderCompiler (void);
extern void glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
extern void glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
extern void glDepthRangef (GLclampf n, GLclampf f);
extern void glClearDepthf (GLclampf d);
typedef void ( * PFNGLRELEASESHADERCOMPILERPROC) (void);
typedef void ( * PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
typedef void ( * PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
typedef void ( * PFNGLDEPTHRANGEFPROC) (GLclampf n, GLclampf f);
typedef void ( * PFNGLCLEARDEPTHFPROC) (GLclampf d);
enum { GL_ARB_get_program_binary = 1 };
extern void glGetProgramBinary (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
extern void glProgramBinary (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
extern void glProgramParameteri (GLuint program, GLenum pname, GLint value);
typedef void ( * PFNGLGETPROGRAMBINARYPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
typedef void ( * PFNGLPROGRAMBINARYPROC) (GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
typedef void ( * PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
enum { GL_ARB_separate_shader_objects = 1 };
extern void glUseProgramStages (GLuint pipeline, GLbitfield stages, GLuint program);
extern void glActiveShaderProgram (GLuint pipeline, GLuint program);
extern GLuint glCreateShaderProgramv (GLenum type, GLsizei count, const GLchar* const *strings);
extern void glBindProgramPipeline (GLuint pipeline);
extern void glDeleteProgramPipelines (GLsizei n, const GLuint *pipelines);
extern void glGenProgramPipelines (GLsizei n, GLuint *pipelines);
extern GLboolean glIsProgramPipeline (GLuint pipeline);
extern void glGetProgramPipelineiv (GLuint pipeline, GLenum pname, GLint *params);
extern void glProgramUniform1i (GLuint program, GLint location, GLint v0);
extern void glProgramUniform1iv (GLuint program, GLint location, GLsizei count, const GLint *value);
extern void glProgramUniform1f (GLuint program, GLint location, GLfloat v0);
extern void glProgramUniform1fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
extern void glProgramUniform1d (GLuint program, GLint location, GLdouble v0);
extern void glProgramUniform1dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
extern void glProgramUniform1ui (GLuint program, GLint location, GLuint v0);
extern void glProgramUniform1uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
extern void glProgramUniform2i (GLuint program, GLint location, GLint v0, GLint v1);
extern void glProgramUniform2iv (GLuint program, GLint location, GLsizei count, const GLint *value);
extern void glProgramUniform2f (GLuint program, GLint location, GLfloat v0, GLfloat v1);
extern void glProgramUniform2fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
extern void glProgramUniform2d (GLuint program, GLint location, GLdouble v0, GLdouble v1);
extern void glProgramUniform2dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
extern void glProgramUniform2ui (GLuint program, GLint location, GLuint v0, GLuint v1);
extern void glProgramUniform2uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
extern void glProgramUniform3i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
extern void glProgramUniform3iv (GLuint program, GLint location, GLsizei count, const GLint *value);
extern void glProgramUniform3f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
extern void glProgramUniform3fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
extern void glProgramUniform3d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
extern void glProgramUniform3dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
extern void glProgramUniform3ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
extern void glProgramUniform3uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
extern void glProgramUniform4i (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
extern void glProgramUniform4iv (GLuint program, GLint location, GLsizei count, const GLint *value);
extern void glProgramUniform4f (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
extern void glProgramUniform4fv (GLuint program, GLint location, GLsizei count, const GLfloat *value);
extern void glProgramUniform4d (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
extern void glProgramUniform4dv (GLuint program, GLint location, GLsizei count, const GLdouble *value);
extern void glProgramUniform4ui (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
extern void glProgramUniform4uiv (GLuint program, GLint location, GLsizei count, const GLuint *value);
extern void glProgramUniformMatrix2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix2x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix3x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix2x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix4x2fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix3x4fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix4x3fv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
extern void glProgramUniformMatrix2x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix3x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix2x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix4x2dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix3x4dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glProgramUniformMatrix4x3dv (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
extern void glValidateProgramPipeline (GLuint pipeline);
extern void glGetProgramPipelineInfoLog (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
typedef void ( * PFNGLUSEPROGRAMSTAGESPROC) (GLuint pipeline, GLbitfield stages, GLuint program);
typedef void ( * PFNGLACTIVESHADERPROGRAMPROC) (GLuint pipeline, GLuint program);
typedef GLuint ( * PFNGLCREATESHADERPROGRAMVPROC) (GLenum type, GLsizei count, const GLchar* const *strings);
typedef void ( * PFNGLBINDPROGRAMPIPELINEPROC) (GLuint pipeline);
typedef void ( * PFNGLDELETEPROGRAMPIPELINESPROC) (GLsizei n, const GLuint *pipelines);
typedef void ( * PFNGLGENPROGRAMPIPELINESPROC) (GLsizei n, GLuint *pipelines);
typedef GLboolean ( * PFNGLISPROGRAMPIPELINEPROC) (GLuint pipeline);
typedef void ( * PFNGLGETPROGRAMPIPELINEIVPROC) (GLuint pipeline, GLenum pname, GLint *params);
typedef void ( * PFNGLPROGRAMUNIFORM1IPROC) (GLuint program, GLint location, GLint v0);
typedef void ( * PFNGLPROGRAMUNIFORM1IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLPROGRAMUNIFORM1FPROC) (GLuint program, GLint location, GLfloat v0);
typedef void ( * PFNGLPROGRAMUNIFORM1FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORM1DPROC) (GLuint program, GLint location, GLdouble v0);
typedef void ( * PFNGLPROGRAMUNIFORM1DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORM1UIPROC) (GLuint program, GLint location, GLuint v0);
typedef void ( * PFNGLPROGRAMUNIFORM1UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLPROGRAMUNIFORM2IPROC) (GLuint program, GLint location, GLint v0, GLint v1);
typedef void ( * PFNGLPROGRAMUNIFORM2IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLPROGRAMUNIFORM2FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
typedef void ( * PFNGLPROGRAMUNIFORM2FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORM2DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1);
typedef void ( * PFNGLPROGRAMUNIFORM2DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORM2UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1);
typedef void ( * PFNGLPROGRAMUNIFORM2UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLPROGRAMUNIFORM3IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
typedef void ( * PFNGLPROGRAMUNIFORM3IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLPROGRAMUNIFORM3FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
typedef void ( * PFNGLPROGRAMUNIFORM3FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORM3DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2);
typedef void ( * PFNGLPROGRAMUNIFORM3DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORM3UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
typedef void ( * PFNGLPROGRAMUNIFORM3UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLPROGRAMUNIFORM4IPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
typedef void ( * PFNGLPROGRAMUNIFORM4IVPROC) (GLuint program, GLint location, GLsizei count, const GLint *value);
typedef void ( * PFNGLPROGRAMUNIFORM4FPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
typedef void ( * PFNGLPROGRAMUNIFORM4FVPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORM4DPROC) (GLuint program, GLint location, GLdouble v0, GLdouble v1, GLdouble v2, GLdouble v3);
typedef void ( * PFNGLPROGRAMUNIFORM4DVPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORM4UIPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
typedef void ( * PFNGLPROGRAMUNIFORM4UIVPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
typedef void ( * PFNGLVALIDATEPROGRAMPIPELINEPROC) (GLuint pipeline);
typedef void ( * PFNGLGETPROGRAMPIPELINEINFOLOGPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
enum { GL_ARB_shader_precision = 1 };
enum { GL_ARB_vertex_attrib_64bit = 1 };
extern void glVertexAttribL1d (GLuint index, GLdouble x);
extern void glVertexAttribL2d (GLuint index, GLdouble x, GLdouble y);
extern void glVertexAttribL3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
extern void glVertexAttribL4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
extern void glVertexAttribL1dv (GLuint index, const GLdouble *v);
extern void glVertexAttribL2dv (GLuint index, const GLdouble *v);
extern void glVertexAttribL3dv (GLuint index, const GLdouble *v);
extern void glVertexAttribL4dv (GLuint index, const GLdouble *v);
extern void glVertexAttribLPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
extern void glGetVertexAttribLdv (GLuint index, GLenum pname, GLdouble *params);
typedef void ( * PFNGLVERTEXATTRIBL1DPROC) (GLuint index, GLdouble x);
typedef void ( * PFNGLVERTEXATTRIBL2DPROC) (GLuint index, GLdouble x, GLdouble y);
typedef void ( * PFNGLVERTEXATTRIBL3DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
typedef void ( * PFNGLVERTEXATTRIBL4DPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void ( * PFNGLVERTEXATTRIBL1DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIBL2DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIBL3DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIBL4DVPROC) (GLuint index, const GLdouble *v);
typedef void ( * PFNGLVERTEXATTRIBLPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
typedef void ( * PFNGLGETVERTEXATTRIBLDVPROC) (GLuint index, GLenum pname, GLdouble *params);
enum { GL_ARB_viewport_array = 1 };
extern void glViewportArrayv (GLuint first, GLsizei count, const GLfloat *v);
extern void glViewportIndexedf (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
extern void glViewportIndexedfv (GLuint index, const GLfloat *v);
extern void glScissorArrayv (GLuint first, GLsizei count, const GLint *v);
extern void glScissorIndexed (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
extern void glScissorIndexedv (GLuint index, const GLint *v);
extern void glDepthRangeArrayv (GLuint first, GLsizei count, const GLclampd *v);
extern void glDepthRangeIndexed (GLuint index, GLclampd n, GLclampd f);
extern void glGetFloati_v (GLenum target, GLuint index, GLfloat *data);
extern void glGetDoublei_v (GLenum target, GLuint index, GLdouble *data);
typedef void ( * PFNGLVIEWPORTARRAYVPROC) (GLuint first, GLsizei count, const GLfloat *v);
typedef void ( * PFNGLVIEWPORTINDEXEDFPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h);
typedef void ( * PFNGLVIEWPORTINDEXEDFVPROC) (GLuint index, const GLfloat *v);
typedef void ( * PFNGLSCISSORARRAYVPROC) (GLuint first, GLsizei count, const GLint *v);
typedef void ( * PFNGLSCISSORINDEXEDPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height);
typedef void ( * PFNGLSCISSORINDEXEDVPROC) (GLuint index, const GLint *v);
typedef void ( * PFNGLDEPTHRANGEARRAYVPROC) (GLuint first, GLsizei count, const GLclampd *v);
typedef void ( * PFNGLDEPTHRANGEINDEXEDPROC) (GLuint index, GLclampd n, GLclampd f);
typedef void ( * PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
typedef void ( * PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
/* + END   ./OpenGL/gl3.h */
]]
return require 'ffi.load' 'GL'
